package com.doit.spark.day02

import com.doit.spark.day01.utils.SparkUtil
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD

/**
 * @DATE 2022/1/3/15:12
 * @Author MDK
 * @Version 2021.2.2
 * */
object C04_Transformation {
  def main(args: Array[String]): Unit = {
    val sc: SparkContext = SparkUtil.getSc
    /**
     * 转换算子       返回新的RDD
     * map(func)    func处理RDD中的每个元素
     */
    // 创建RDD
    val rdd: RDD[Int] = sc.parallelize(Seq[Int](1, 2, 3, 4, 5, 6), 2)
    //  val rdd2: RDD[String] = sc.textFile("data/a.txt")
     val rdd2: RDD[Int] = rdd.map(_ * 10)   // 返回新的RDD
    val rdd3: RDD[Int] = rdd.map(_ * 10) .map(_ * 2).map(_ * 10).map(_ / 2)
    // rdd3.foreach(println)
    /**
     * filter 过滤   只收集结果为true的数据
     * 对每个元素处理  进行判断
     * saveAsTextFile  触发算子执行  行动算子
     */
    //val rdd2: RDD[Int] = rdd.filter(_ %2==0)
    //rdd2.saveAsTextFile("data/filter_res/")
    // rdd2.foreach(println)

    /*rdd.map(_*10).filter(_>20)
    val rdd2 = rdd.map(e=>{
      println("map1.........")
      e
    }).map(e=>{
      println("map2.......")
      e
    })*/

    //user要进行序列化,转化为样例类  传值后进行打印
    val user = User(1, "zss")
//    var i = 0
    rdd.map(e=>{
      println("map1...."+user)
      e
    }).foreach(println)


  }
}
